import { createApp } from "vue";
import App from "./App.vue";

// pinia 官方文档 https://pinia.vuejs.org
import { createPinia } from "pinia";

// import { createPinia } from "@/pinia"; // 引入自己的使用 pinia
import { useCounterStore1 } from "./stores/counter1";


const app = createApp(App);

const pinia = createPinia();

// pinia  插件就是一个函数， use 注册插件 (插件核心就是利用 $onAction $subscribe 方法)
pinia.use(function ({ store }) {
    // 实现持久化存储插件
    let local = localStorage.getItem(store.$id + "PINIA_STATE");
    if (local) {
        store.$state = JSON.parse(local); // 刷新时执行
    }

    // 监听状态改变
    store.$subscribe(({ storeId: id }, state) => {
        // 更改时触发本地存储
        localStorage.setItem(id + "PINIA_STATE", JSON.stringify(state));
    });

    return { name: "ranmo" }; // 插件返回数据
});

app.use(pinia).mount("#app");

// 任何位置获取 store
const store = useCounterStore1(); // 没有组件 inject 方法是无法使用
console.log(store);
